/****************************************************************************************
*                                                                                      *
*                          Projeto BioInfo - Lincs and CIn / UFPE                      *
*                                    07/10/2014                                        *
*																					   *
****************************************************************************************
* Descricao: Arquivo que contem a classe bioaplication_sw.                    *
****************************************************************************************
* Responsaveis: Jefferson Ramos (jrla)													   *
*                                                                                      */
/*                                                                                     *
****************************************************************************************/

#ifndef BIOAPLICATION_SW_HPP_
#define BIOAPLICATION_SW_HPP_

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include "Tictoc.hpp"
#include "Canonic.hpp"
#include "Threads.hpp"
#include "files_BD.hpp"
#include "Ocl.hpp"

#define PRINT_TAXA
#define NUM_TEST 26

using namespace std;

class bioaplication_sw{

	int NUM_THREADS = 10;
	int TAMSEQ = 252;
	int run_times = 5;
	int alignment_by_individuals = 1;
	int num_individuals = 8;
	int query_compare = 1; //query escolhida
	int alignment_by_threads = 1;
	int use_gpu = 0;

public:

	TictocAverage tt;

	int qtd_alignment = 1;

	double sum_time;
	double time_average;

	int *vector_taxa;
	int *score_vector;

	FILE *BD_nucleotideos;

	Canonic *bioinfo_canonic = NULL;
	Threads *bioinfo_threads = NULL;
	files_BD *bioinfo_BD = NULL;
	Ocl *bioinfo_ocl = NULL;

	bioaplication_sw(
						int NUM_THREADS,
						int TAMSEQ,
						int alignment_by_individuals,
						int num_individuals,
						int query_compare,
						int run_times,
						int use_gpu
						);

	/**********************************************
	Destrutor da classe NeedleMan
	**********************************************/
	//virtual ~bioaplication_sw();

	int get_id_program();

	void executar();

	void run_canonic();

	void run_threads();

	void run_bank_file();
	
	void run_ocl();
};

#endif BIOAPLICATION_SW_HPP_